package top.shiyiri.threading;

/**
 * 多线程的创建方式一：继承于 Thread 类
 * 1.创建一个继承于 Thread 类的子类
 * 2.重写 Thread 类的 run()  -->  此线程执行的操作声明在 run() 方法中
 * 3.创建 Thread 类的子类的对象
 * 4.通过此对象调用 start()
 *
 * 例：遍历 100 以内的所有的偶数
 *
 *
 * @author Aunean
 * @date 2021/12/25
 */

//1.创建一个继承于 Thread 类的子类
class MyThread extends Thread {
    //2.重写 Thread 类的 run()
    @Override
    public void run() {

        for (int i = 0; i < 1000; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}
public class ThreadTest {

    public static void main(String[] args) {
        //3.创建 Thread 类的子类的对象
        MyThread t1 = new MyThread();

        //4.通过此对象调用 start()：① 启动当前线程；② 调用当前线程的 run()
        t1.start();
        //问题一：我们不能通过直接调用 run() 的方式来启动线程
        //t1.run();

        //问题二：不能让已经 start() 的线程再去执行。会报 IllegalThreadStateException
        //t1.start();
        //我们需要重新创建一个线程的对象
        MyThread t2 = new MyThread();
        t2.start();

        for (int i = 0; i < 1000; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i + "********main()*********");
            }
        }

    }
}
